home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / movingsine.lha / moving-sine.S < prev    next >
Encoding:
Text File  |  1990-09-14  |  4.9 KB  |  230 lines

  1.     section l,code_c
  2. ; coded by atlaw
  3.  
  4. screen: equ $60000
  5. radsize:equ 40
  6. scsize: equ radsize*263
  7. IRQBASE:equ    $6c
  8.  
  9. DEST=    screen+4020
  10.  
  11. INTENA:    equ    $09a
  12. INTENAR:equ    $01c
  13. INTREQR:equ    $01e
  14. INTREQ:    equ    $09c
  15. DMACONR:equ    $002
  16. DMACON:    equ    $096
  17. COP1LCH:equ    $080
  18. COP2LCH:equ    $084
  19. COPJMP1:equ    $088
  20. COPJMP2:equ    $08a
  21. COPCON:    equ    $02e
  22. JOY0DAT:equ    $00a
  23. JOY1DAT:equ    $00c
  24. SPR0DATA:equ    $144
  25. BLTAPTH:equ     $050
  26. BLTBPTH:equ     $04c
  27. BLTCPTH:equ     $048
  28. BLTDPTH:equ     $054
  29. BLTAMOD:equ     $064
  30. BLTBMOD:equ     $062
  31. BLTCMOD:equ     $060
  32. BLTDMOD:equ     $066
  33. BLTCON0:equ     $040
  34. BLTCON1:equ     $042
  35. BLTAFWM:equ     $044
  36. BLTALWM:equ     $046
  37. BLTSIZE:equ     $058
  38. BLTADAT:equ     $074
  39. BLTBDAT:equ     $072
  40. BLTCDAT:equ     $070
  41.  
  42. s:
  43. multioff: 
  44.     move.l    $4,a6
  45.         jsr    -132(a6)
  46. memclear: 
  47.     move.l    #$060000,a0
  48.     move.l    #$070000,a1
  49.     moveq    #$00,d0
  50. mclear:    
  51.     move.b    d0,(a0)+
  52.     cmp.l    a0,a1
  53.     bne    mclear
  54.  
  55.     move.l    #$dff000,a6
  56. systemout:
  57.     move.l    #COPPER,COP1LCH(a6)
  58.     clr.w    COPJMP1(a6)
  59.     lea    OLDONES(pc),a0
  60.     move.l    IRQBASE,(a0)+
  61.     move.w    INTENAR(a6),(a0)+
  62.     move.w    DMACONR(a6),(a0)+
  63.     lea    INTERUPT(pc),a0
  64.     move.l    a0,IRQBASE
  65.     move.w    #$7fff,DMACON(a6)
  66.     move.w    #$83c0,DMACON(a6)
  67.     move.w    #$7fff,INTENA(a6)
  68.     move.w    #$c020,INTENA(a6)
  69.     clr.l    SPR0DATA(a6)
  70.     or.w    #$0002,COPCON(a6)
  71.     clr.w    d3
  72.     move.w    #64,d4
  73.  
  74. CHECK:     
  75.     btst     #$6,$bfe001
  76.           bne    CHECK
  77. RETURN: 
  78.     lea    OLDONES(pc),a0
  79.     move.l    (a0)+,IRQBASE
  80.     move.w    (a0)+,d0
  81.     bset    #15,d0
  82.     move.w    #$7fff,INTENA(a6)
  83.     move.w    d0,INTENA(a6)
  84.     move.w    (a0)+,d0
  85.     bset    #15,d0
  86.     move.w    #$7fff,DMACON(a6)
  87.     move.w    d0,DMACON(a6)
  88.     move.l    $4,a6
  89.     lea    GFXNAME(pc),a1
  90.     clr.w    d0
  91.     jsr    -552(a6)
  92.     move.l    d0,a0
  93.     move.l    38(a0),$dff000+COP1LCH
  94.     clr.w    $dff000+COPJMP1
  95.     jsr    -138(a6)
  96.     clr.l    d0
  97.         rts
  98.  
  99. OLDONES:
  100. OLDIRQ:    dc.l    0
  101. OLDINT:    dc.w    0
  102. OLDDMA:    dc.w    0
  103. GFXNAME:dc.b    "graphics.library",00
  104.  
  105.     even
  106. COPPER:    
  107.     dc.w    $008e,$2c81,$0090,$7fc1
  108.     dc.w    $0092,$0038,$0094,$00d0
  109.     dc.w    $0102,$0000
  110.     dc.w    $0104,$0000
  111.     dc.w    $0108,$0000
  112.     dc.w    $010a,$0000
  113.     dc.w    $0100,$1200
  114. col:    dc.w    $0180,$0000,$0182,$0ccc,$0184,$0ee0,$0186,$0e80
  115.     dc.w    $0188,$0e00,$018a,$0668,$018c,$088a,$018e,$0aac
  116.     dc.w    $0190,$0cce,$0192,$0464,$0194,$0242,$0196,$0c6e
  117.     dc.w    $0198,$0eee,$019a,$0eee,$019c,$0eee,$019e,$0eee
  118. bpl1:    dc.w    $00e0,$0006,$00e2,$0000
  119.     dc.w    $00e4,$0006,$00e6,$0000
  120.     dc.w    $00e8,$0006,$00ea,$0000
  121.     dc.w    $00ec,$0006,$00ee,$0000
  122.     dc.w    $0001,$7ffe 
  123. copclr:    dc.w    BLTDPTH,$0006,BLTDPTH+2,$0000
  124.     dc.w    BLTDMOD,$0000
  125.     dc.w    BLTCON0,$01f0
  126.     dc.w    BLTCON1,$0000
  127.     dc.w    BLTADAT,$0000
  128.     dc.w    BLTSIZE,$4014
  129.     dc.w    $ffff,$fffe  
  130.  
  131. INTERUPT:
  132.     move.w    INTREQR(a6),d0
  133.     btst    #05,d0
  134.     bne    MAINvb
  135. ;-------interupt kollar
  136. out:    
  137.     move.w    d0,INTREQ(a6)
  138.     rte
  139. MAINvb:    
  140.     move.w    d0,INTREQ(a6)
  141. mousecheck:
  142.      btst     #$6,$bfe001
  143.           beq    out
  144. ;-------frame ruitner
  145.     bsr    A
  146.     rte
  147.  
  148. A:
  149.     lea    sinelist(pc),a0
  150.     moveq    #15,d7
  151.     move.l    #$80008000,d1
  152. aloop1:
  153.     move.l    #screen+1200,a1
  154.     clr.w    d0
  155.     move.b    (a0,d3.w),d0
  156.     mulu    #50,d0
  157.     lsr.l    #8,d0
  158.     mulu    #radsize,d0
  159.     add.l    d0,a1
  160.     clr.w    d0
  161.     move.b    (a0,d4.w),d0
  162.     mulu    #304,d0
  163.     lsr.l    #8,d0
  164.     ror.l    #4,d0
  165.     add.w    d0,d0
  166.     add.w    d0,a1
  167.     swap    d0
  168.     or.w    #$0dfc,d0    
  169.     bsr    bwait 
  170.     move.l    #DATA,BLTAPTH(a6) 
  171.     move.l    a1,BLTBPTH(a6)
  172.     move.l    a1,BLTDPTH(a6)
  173.     move.w    #$0000,BLTAMOD(a6)
  174.     move.w    #radsize*9-4,BLTBMOD(a6)
  175.     move.w    #radsize*9-4,BLTDMOD(a6)
  176.     move.w    d0,BLTCON0(a6)
  177.     move.w    #$0000,BLTCON1(a6)
  178.     move.l    d1,BLTAFWM(a6)
  179.     move.w    #$0402,BLTSIZE(a6)
  180.     addq.b    #3,d3
  181.     addq.b    #3,d4
  182.     ror.l    #1,d1
  183.     dbra    d7,aloop1
  184.     sub.b    #16*3+3,d3
  185.     sub.b    #16*3+2,d4
  186.     rts
  187.  
  188. bwait:    btst     #$6,$002(a6)
  189.     bne     bwait
  190.     rts
  191.  
  192.  
  193. DATA:
  194.     dc.w    %0111111111111110,0
  195.     dc.w    %1111111111111111,0
  196.     dc.w    %1111111111111111,0
  197.     dc.w    %1111110000111111,0
  198.     dc.w    %1111110000111111,0
  199.     dc.w    %1111110000111111,0
  200.     dc.w    %1111110000111111,0
  201.     dc.w    %1111110000111111,0
  202.     dc.w    %1111110000111111,0
  203.     dc.w    %1111110000111111,0
  204.     dc.w    %1111111111111111,0
  205.     dc.w    %1111111111111111,0
  206.     dc.w    %1111110000111111,0
  207.     dc.w    %1111110000111111,0
  208.     dc.w    %1111110000111111,0
  209.     dc.w    %1111110000111111,0
  210.  
  211. sinelist:;256 positioner (7 bitar),sin x*127:x=x+1.40625 (?)
  212.     dc.b    127,130,133,136,139,143,146,149,152,155,158,161,164,167,170,173,176
  213.     dc.b    178,181,184,187,190,192,195,198,200,203,205,208,210,212,215,217,219
  214.     dc.b    221,223,225,227,229,231,233,234,236,238,239,240,242,243,244,245,247
  215.     dc.b    248,249,249,250,251,252,252,253,253,253,254,254,254,254,254,254,254
  216.     dc.b    253,253,253,252,252,251,250,249,249,248,247,245,244,243,242,240,239
  217.     dc.b    238,236,234,233,231,229,227,225,223,221,219,217,215,212,210,208,205
  218.     dc.b    203,200,198,195,192,190,187,184,181,178,176,173,170,167,164,161,158
  219.     dc.b    155,152,149,146,143,139,136,133,130,127,124,121,118,115,111,108,105
  220.     dc.b    102,099,096,093,090,087,084,081,078,076,073,070,067,064,062,059,056
  221.     dc.b    054,051,049,046,044,042,039,037,035,033,031,029,027,025,023,021,020
  222.     dc.b    018,016,015,014,012,011,010,009,007,006,005,005,004,003,002,002,001
  223.     dc.b    001,001,000,000,000,000,000,000,000,001,001,001,002,002,003,004,005
  224.     dc.b    005,006,007,009,010,011,012,014,015,016,018,020,021,023,025,027,029
  225.     dc.b    031,033,035,037,039,042,044,046,049,051,054,056,059,062,064,067,070
  226.     dc.b    073,076,078,081,084,087,090,093,096,099,102,105,108,111,115,118,121
  227.     dc.b    124,127
  228.  
  229.  
  230.